import request from '@/utils/request'

// 用户登录
export function login(data) {
  // 参数验证
  if (!data || !data.username || !data.password) {
    return Promise.reject(new Error('用户名和密码不能为空'))
  }

  return request({
    url: '/auth/login',
    method: 'post',
    data
  })
}

// 用户登出
export function logout() {
  return request({
    url: '/auth/logout',
    method: 'post'
  })
}

// 刷新令牌
export function refreshToken() {
  return request({
    url: '/auth/refresh',
    method: 'post'
  })
}

// 验证令牌
export function validateToken() {
  return request({
    url: '/auth/validate',
    method: 'get'
  })
}

// 检查用户名是否可用
export function checkUsername(username) {
  // 参数验证
  if (!username || typeof username !== 'string' || username.trim().length === 0) {
    return Promise.reject(new Error('用户名不能为空'))
  }

  return request({
    url: '/auth/check-username',
    method: 'post',
    data: { username: username.trim() }
  })
}

// 用户注册
export function register(data) {
  // 参数验证
  if (!data || typeof data !== 'object') {
    return Promise.reject(new Error('注册数据不能为空'))
  }

  const requiredFields = ['username', 'password', 'realName']
  for (const field of requiredFields) {
    if (!data[field] || data[field].trim().length === 0) {
      return Promise.reject(new Error(`${field} 不能为空`))
    }
  }

  return request({
    url: '/auth/register',
    method: 'post',
    data
  })
}

// 验证安全问题
export function verifySecurityQuestion(data) {
  return request({
    url: '/auth/verify-security-question',
    method: 'post',
    data
  })
}

// 重置密码
export function resetPassword(data) {
  return request({
    url: '/auth/reset-password',
    method: 'post',
    data
  })
}